<cfcomponent output="false">
  <cfset session.user =  createObject('component','cfesapi.org.owasp.esapi.User') />
	<cffunction name="init" access="public" returntype="sessionFacade" output="false">
		<cfreturn this />
	</cffunction>

	<cffunction name="getSessionUser" access="public" returntype="Any" output="false">
		<cfreturn session.user />
	</cffunction>

	<cffunction name="setSessionUser" access="public" returntype="void" output="false">
		<cfargument name="user" type="any" required="true" />

		<cfset session.user = arguments.user />
	</cffunction>

	<cffunction name="setSessionProperty" access="public" returntype="void" output="false">
		<cfargument name="property" type="string" required="true" hint="Name of the property" />
		<cfargument name="value" type="any" required="false" default="" hint="Value (Simple or Complex) of the property" />

		<cfset "session.#arguments.property#" = arguments.value />
	</cffunction>

	<cffunction name="getSessionProperty" access="public" returntype="any" output="false">
		<cfargument name="property" type="string" required="true" hint="Name of the property" />

		<cfreturn "session.#arguments.property#" />
	</cffunction>
</cfcomponent>